package utils;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;

/**
 * Base para una clase AsyncTask, muestra un cuadro de carga mientras se ejecuta la tarea.
 * @author fcarou
 */
public abstract class BaseAsync extends AsyncTask<Void, Void, Void>
{
	private ProgressDialog progress;
	
	/**
	 * Instancia el objeto con un mensaje, el cuadro no puede ser cancelado.
	 * @param context el contexto de la aplicacion.
	 * @param mensaje el mensaje que mostrara el cuadro de carga.
	 */
	public BaseAsync (Context context, String mensaje)
	{
		this(context, mensaje, false);
	}
	
	/**
	 * Instancia el objeto con un mensaje y opcion de cancelado.
	 * @param context el contexto de la aplicacion.
	 * @param mensaje el mensaje que mostrara el cuadro de carga.
	 * @param cancelable indica si el cuadro puede ser cancelable o no.
	 */
	public BaseAsync (Context context, String mensaje, boolean cancelable)
	{
		progress = new ProgressDialog(context);
		progress.setMessage(mensaje);
		
		progress.setCancelable(cancelable);
		progress.setCanceledOnTouchOutside(cancelable);
	}
	
	@Override
	protected void onPreExecute()
	{
		progress.show();
		
		super.onPreExecute();
	}
	
	@Override
	protected void onPostExecute(Void result)
	{
		progress.dismiss();
		
		super.onPostExecute(result);
	}
}
